package com.ict.ais.abnormal.facade.api;




import com.ict.ais.abnormal.facade.dto.AreaSet;
import com.ict.ais.abnormal.facade.dto.ResultObj;
import com.ict.ais.abnormal.facade.model.AISOffLine;
import com.ict.ais.abnormal.facade.model.AbnormalSet;
import com.ict.ais.abnormal.facade.model.AnomalyGrids;
import com.ict.ais.abnormal.facade.model.AnomalyShips;
import com.ict.ais.abnormal.facade.model.ZoneEntry;
import com.ict.ais.abnormal.facade.model.ZoneEntryCache;
import com.ict.ais.area.facade.model.Point;

import java.util.List;


public interface IAbnormalService {
   
    /**
     * 区域异常设置添加-矩形
     * @param areaSet
     * @return
     */
    public boolean areaAbnormalSetRectangle(AreaSet areaSet) ;
    /**
     * 区域异常设置添加-多边形
     * @param points
     * @param areaName
     * @return
     */
    public boolean areaAbnormalSetPolygons(Point[] points,String areaName,int areaId);

    /**
     * 区域异常设置添加-圆形
     * @param point
     * @param radius
     * @param areaName
     * @return
     */
    public boolean areaAbnormalSetCircle(Point point,int radius,String areaName,int areaId);
    /**
     * 区域异常设置添加-扇形，扇环形
     * @param point
     * @param radius
     * @param areaName
     * @return
     */
    public boolean areaAbnormalSetSector(Point point,int radius,int radsmal,double start_deg,double end_deg,String areaName,int areaId);

    /**
     * 区域异常设置删除
     *
     * @param areaIdArr
     * @return
     */
    public boolean areaSetDelete(String areaIdArr) ;
    /**
     * 异常设置
     *
     * @param abnormalSet
     * @return
     */
    public boolean otherAbnormalSet(AbnormalSet abnormalSet) ;

    /**
     * 异常设置的获取
     *
     * @return
     */
    public AbnormalSet getAbnormalSet() ;
    /**
     * 异常设置的更新
     *
     * @param abnormalSet
     * @return
     */
    public boolean updateAbnormalSet(AbnormalSet abnormalSet) ;
    /**
     * 获取驶入敏感地带异常
     *
     * @return
     */
    public List<ZoneEntry> getZoneEntry(int tim,int limit) ;
    /**
     * 获取驶入敏感缓冲地带异常
     * @param tim
     * @param limit
     * @return
     */
    public List<ZoneEntryCache> getZoneEntryCache(int tim,int limit) ;
    /**
     * 获取船速过快异常
     *
     * @return
     */

    public List<AnomalyShips> getAnomalyShips(int tim,int limit) ;

    /**
     * 疑似JS目标异常获取
     * @param tim
     * @param limit
     * @return
     */
    public List<AnomalyShips> getAnomalyJS(int tim,int limit) ;
    /**
     * 疑似执法目标异常获取
     * @param tim
     * @param limit
     * @return
     */
    public List<AnomalyShips> getAnomalyZF(int tim,int limit) ;

    /**
     * 获取异常聚集异常
     *
     * @return
     */
    public List<AnomalyGrids> getAnomalyGrids(int tim,int limit) ;
    /**
     * 获取AIS关闭异常
     *
     * @return
     */
    public List<AISOffLine> getAISOffLine(int tim,int limit) ;
    /**
     *
     * @param tim
     * @param limit
     * @return
     */
    public ResultObj getImTarget(int tim,int limit);
}